/*
 * ChatMessageAction.java
 *
 * Created on 2007年5月14日, 下午1:54
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package com.ecomm.chat.action;

import com.ecomm.chat.manager.ChatMessageManager;
import com.ecomm.chat.manager.ChatRemindManager;
import com.ecomm.platcore.utils.Page;
import com.ecomm.chat.pojo.ChatMessage;
import com.ecomm.util.Logger;
import com.ecomm.platcore.struts.StrutsEntityAction;
import com.pphome.orgmodel.pojo.UserInfo;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
 *
 * <p>Title: 易讯聊天系统</p>
 * <p>Description:
 *  易讯聊天系统
 * </p>
 * <p>Copyright: Copyright (c) 2007</p>
 * <p>Company: 联合易讯 </p>
 * @author <font color='blue'>pijunliang</font> &nbsp&nbsp<a href="mailto:pijunliang@hotmail.com">pijunliang@hotmail.com</a>
 * @version 1.0
 * @since  2007年5月14日, 下午1:54
 */

public class ChatMessageAction extends StrutsEntityAction<ChatMessage, ChatMessageManager> {
    private Log log = Logger.getLog(ChatMessageAction.class);
    
    private ChatMessageManager chatMessageManager;
    
    public void setChatMessageManager(ChatMessageManager chatMessageManager) {
        this.chatMessageManager = chatMessageManager;
    }
    /**
     * 消息 记录的查询 （新消息 和历史记录），
     * 这个方发比较复杂点，刚开始设计的时候本来按照类型分开查询和处理，这样就要写好几个方法
     * 现在把他们合并了，花了很多心思才合并完成！
     * 合并后  有个好处 就是查询 和分页 不用处理多次 就在这一个地方有入口，
     * 并且 删除也在这个方法中，不用做了删除操作之后 还要查询一次返回一个LIST到页面
     *
     * 合并后 在这个方法中 看上去就比较费劲了！
     */
    public ActionForward search(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
        //取出分页的基本信息
        int intPage=1; //当前页 ，默认是从1开始
        int intPageSize=10; //每页存多少条
        try{
            if(request.getParameter("intPage")!=null){
                intPage=Integer.parseInt(request.getParameter("intPage"));
                intPage = intPage<0?1:intPage;
            }
        }catch(Exception ex){
            intPage=1;
        }
        try{
            if(request.getParameter("intPageSize")!=null){
                intPageSize=Integer.parseInt(request.getParameter("intPageSize"));
                intPageSize = intPageSize<0?10:intPageSize;  //默认10条
                
            }
        }catch(Exception ex){
            intPageSize = 10;
        }
        //取出要删除所有的 IDS
        String[] ids = request.getParameterValues("ids");
        //取出当前用户的ID
        UserInfo ui=(UserInfo)request.getSession().getAttribute("userinfoSess");
        String userid =ui.getId();
        // String userid  = request.getParameter("userid");
        //删除标记 ，是否要删除 ，如果没有这个标记的话，我查询的时候选上用户 ，也会删除
        String deleteflag = request.getParameter("deleteflag");
        if(deleteflag != null  && !deleteflag.equals("")){
            if(ids != null && ids.length >0){
                for (int i = 0; i < ids.length; i++) {
                    // c.id,c.senduserid,r.acceptuserid
                    String[] id = ids[i].split(",");
                    boolean _bool = false;
                    //如果删除人 等于这条消息的发送人，默认把消息记录表和提醒表中所有记录青空
                    if(userid != null && id[1]!= null && id[1].equals(userid)){
                        _bool = true;
                    }
                    ChatRemindManager.getInstance().deleteRemindWorkFlow(id[0],id[2],_bool);
                }
            }
        }
        // 排序的2个字段
        //假如要在页面列表中加入排序功能就要加这2个字段
        String sort_field = request.getParameter("sort_field");
        String sort_type = request.getParameter("sort_type");
        
        boolean bool = false;
        String flag = request.getParameter("flag"); // 为了区分当前请求是新消息还是历史消息的标识
        if(flag != null && flag.equals("1")){ //1 为 新消息
            bool = true;
        }else{
            bool = false;
        }
        // 将lazyform内容绑定到object
        ChatMessage object ;
        if(request.getAttribute("chatMessage") != null){
            object = (ChatMessage)request.getAttribute("chatMessage");
        }else{
            object = doNewEntity(form, request);
            initEntity(form, request, object);
            object.setAcceptUserid(userid);
        }
        //将查询条件返回到页面 ，
        request.setAttribute("flag",flag);
        request.setAttribute("chatMessage",object);
        request.setAttribute("sort_field",sort_field);
        request.setAttribute("sort_type",sort_type);
        //用我自己实现的分页
        Page page =  chatMessageManager.search(object,sort_field,sort_type,bool,intPageSize,intPage);
        request.setAttribute("pageview",page.getPageView()); //分页的信息
        request.setAttribute("getMessage",page.getList());//页面的记录
        return mapping.findForward(SUCCESS);
    }
}
